﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RRHH.Competencias.Controladores;
using RRHH.Competencias.Entities;
using System.Data;

namespace WebSite
{
    public partial class ColaboradoresPuestosCapacidades : System.Web.UI.Page
    {
        protected string codigoPantalla = "COLABORADORESPUESTOSCAPACIDADES";

        protected void Page_Load ( object sender, EventArgs e )
        {
            if (!Page.IsPostBack)
            {
                if (!Master.ValidarAcceso(codigoPantalla)) Response.Redirect("Inicio.aspx");

                MpeDetallePuesto.Hide();
                MpeDetalleCapacidades.Hide();

                btnCancelar.Attributes.Add( "onclick", "return confirm('Está seguro que desea cancelar la operación?')");
                btnCancelarC.Attributes.Add( "onclick", "return confirm('Está seguro que desea cancelar la operación?')" );

                Session["ABMColaboradoresPuestosCapacidades.dt"] = null;
                Session["ABMColaboradoresPuestosCapacidades.Indice"] = null;
                Session["ABMColaboradoresPuestosCapacidades.lstColaboradores"] = null;
                Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = null;
                Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"] = null;
                Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = null;

                try
                {
                    
                    BuscarColaboradores( null, null, null, null, null, null, null, null, chkActivo.Checked );
                    BuscarPuestos( null, null, null, true );
                }
                catch (Exception ex)
                {
                    ScriptManager.RegisterStartupScript( this, this.GetType(), "Error", "alert('" + ex.Message + "')", true );
                }
            }
        }

        private void BuscarColaboradores ( long? colaborador_id, string legajo, string nombre, string apellido,
                                     string domicilio, string mail, string telefono, string telefonoMovil,
                                     bool activo )
        {
            if (Session["ABMColaboradoresPuestosCapacidades.Indice"] == null)
            {
                Session["ABMColaboradoresPuestosCapacidades.Indice"] = 0;
            }

            if (legajo == string.Empty)
            {
                legajo = null;
            }

            if (apellido == string.Empty)
            {
                apellido = null;
            }

            GestorColaborador gestorColaborador = new GestorColaborador();
            List<Colaborador> lstColaboradores = new List<Colaborador>();

            lstColaboradores = gestorColaborador.Buscar( colaborador_id, legajo, nombre, apellido, domicilio,
                                                        mail, telefono, telefonoMovil, activo );//ciclo_id, activo);

            grvColaboradores.DataKeyNames = new string[] { "IdColaborador", "Id" };

            grvColaboradores.DataSource = lstColaboradores;
            grvColaboradores.PageIndex = Convert.ToInt32( Session["ABMColaboradoresPuestosCapacidades.Indice"] );
            grvColaboradores.DataBind();

            Session["ABMColaboradoresPuestosCapacidades.lstColaboradores"] = lstColaboradores;

            UpdListadoColaboradores.Update();
        }

        private void BuscarPuestos ( long? puesto_id, string nombre, string descripcion,
                                   bool activo )
        {
            if (nombre == string.Empty)
            {
                nombre = null;
            }

            GestorPuesto gestorPuesto = new GestorPuesto();
            List<Puesto> lstPuesto = new List<Puesto>();

            lstPuesto = gestorPuesto.Buscar( puesto_id, null, nombre, descripcion, activo );

            grvPuestosDisponibles.DataKeyNames = new string[] { "Id" };
            grvPuestosDisponibles.DataSource = lstPuesto;
            grvPuestosDisponibles.DataBind();

            Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"] = lstPuesto;

            CargarGrillaPuestosDisponibles( 0 );
        }

        private void CargarGrillaPuestosDisponibles ( int pagina )
        {
            if (Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"] != null)
            {
                List<Puesto> lstPuestosDisponibles = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"];

                grvPuestosDisponibles.DataSource = lstPuestosDisponibles;
                grvPuestosDisponibles.DataKeyNames = new string[] { "Id" };

                grvPuestosDisponibles.PageIndex = pagina;
                grvPuestosDisponibles.DataBind();

                lblCantidadPuestosDisponibles.Text = lstPuestosDisponibles.Count.ToString();
            }
            else
            {
                lblCantidadPuestosDisponibles.Text = "0";
            }
        }

        private void CargarGrillaPuestosAsignados ( int pagina )
        {
            if (Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] != null)
            {
                List<Puesto> lstPuestosAsignados = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"];

                grvPuestosAsignados.DataSource = lstPuestosAsignados;
                grvPuestosAsignados.DataKeyNames = new string[] { "Id" };
                grvPuestosAsignados.PageIndex = pagina;
                grvPuestosAsignados.DataBind();

                lblCantidadPuestosAsignados.Text = lstPuestosAsignados.Count.ToString();
            }
            else
            {
                lblCantidadPuestosAsignados.Text = "0";
            }
        }

        private void RegistrarMensajeJavascript ( string nombre, string mensaje )
        {
            mensaje = mensaje.Replace( "'", string.Empty );
            mensaje = mensaje.Replace( "(", string.Empty );
            mensaje = mensaje.Replace( ")", string.Empty );
            mensaje = mensaje.Replace( ",", string.Empty );
            mensaje = mensaje.Replace( ";", string.Empty );
            mensaje = mensaje.Replace( "\"", string.Empty );

            ScriptManager.RegisterStartupScript( this, this.GetType(), nombre, "alert('" + mensaje + "');", true );
        }

        private void CompletarCampos ( Colaborador colaborador )
        {
            if (colaborador != null)
            {
                lblLegajoPValor.Text = colaborador.Legajo;
                lblNombrePValor.Text = colaborador.Nombre;
                lblApellidoPValor.Text = colaborador.Apellido;

                grvPuestosAsignados.DataSource = colaborador.Puestos;
                grvPuestosAsignados.DataKeyNames = new string[] { "Id" };
                grvPuestosAsignados.DataBind();

                lblCantidadPuestosAsignados.Text = colaborador.Puestos.Count.ToString();

                Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = colaborador.Puestos;
            }
        }

        protected void btnBuscar_Click ( object sender, ImageClickEventArgs e )
        {
            try
            {
                Session["ABMColaboradoresPuestosCapacidades.Indice"] = 0;

                BuscarColaboradores( null, txtBuscarLegajo.Text, null, txtBuscarApellido.Text, null, null,
                                    null, null, chkActivo.Checked );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript("Error", "No se pudo obtener el listado de capacidades del puesto");
            }
        }

        protected void grvColaboradores_PageIndexChanging ( object sender, GridViewPageEventArgs e )
        {
            try
            {
                Session["ABMColaboradoresPuestosCapacidades.Indice"] = e.NewPageIndex;

                BuscarColaboradores( null, txtBuscarLegajo.Text, null, txtBuscarApellido.Text, null, null, null,
                                    null, chkActivo.Checked );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript("Error","No se pudo obtener el listado de colaboradores");
            }
        }

        protected void grvColaboradores_RowCommand ( object sender, GridViewCommandEventArgs e )
        {
            GestorColaborador gestorColaborador = new GestorColaborador();

            int indiceFila = 0;

            if (e.CommandName == "Puestos")
            {
                try
                {
                    List<Colaborador> lstColaboradores = new List<Colaborador>();
                    lstColaboradores = (List<Colaborador>)Session["ABMColaboradoresPuestosCapacidades.lstColaboradores"];
                    Colaborador colaboradorUpdate = new Colaborador();

                    indiceFila = Convert.ToInt16( e.CommandArgument );
                    Int64 idColaborador = Convert.ToInt64( grvColaboradores.DataKeys[indiceFila].Values["IdColaborador"] );

                    foreach (Colaborador colaborador in lstColaboradores)
                    {
                        if (colaborador.IdColaborador == idColaborador)
                        {
                            colaboradorUpdate.IdColaborador = idColaborador;
                            break;
                        }
                    }

                    LimpiarCampos();

                    gestorColaborador.Completar( colaboradorUpdate );

                    CompletarCampos( colaboradorUpdate );
                    Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = colaboradorUpdate;

                    MpeDetallePuesto.Show();
                }
                catch (Exception)
                {
                    this.RegistrarMensajeJavascript( "Error", "No se pudo completar la informacion de los Puestos" );
                    return;
                }
            }
            else
            {
                if (e.CommandName == "Capacidades")
                {
                    try
                    {
                        List<Colaborador> lstColaboradores = new List<Colaborador>();
                        lstColaboradores = (List<Colaborador>)Session["ABMColaboradoresPuestosCapacidades.lstColaboradores"];
                        Colaborador colaboradorUpdate = new Colaborador();

                        indiceFila = Convert.ToInt16( e.CommandArgument );
                        Int64 idColaborador = Convert.ToInt64( grvColaboradores.DataKeys[indiceFila].Values["IdColaborador"] );

                        foreach (Colaborador colaborador in lstColaboradores)
                        {
                            if (colaborador.IdColaborador == idColaborador)
                            {
                                colaboradorUpdate.IdColaborador = idColaborador;
                                gestorColaborador.Completar( colaboradorUpdate );
                                Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = colaboradorUpdate;
                                BuscarPuestosTareasCapacidades( colaboradorUpdate );
                                break;
                            }
                        }
                        MpeDetalleCapacidades.Show();
                    }
                    catch (Exception)
                    {
                        this.RegistrarMensajeJavascript( "Error", "No se pudo completar la informacion de las Capacidades" );
                        return;
                    }
                }
            }
        }

        protected void btnBuscarPuesto_Click ( object sender, ImageClickEventArgs e )
        {
            try
            {
                BuscarPuestos( null, txtBuscarPuesto.Text, null, true );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript("Error","No se pudo obtener el listado de puestos");
            }
        }

        protected void grvPuestosDisponibles_PageIndexChanging ( object sender, GridViewPageEventArgs e )
        {
            try
            {
                CargarGrillaPuestosDisponibles( e.NewPageIndex );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript( "Error", "No se pudo mostrar el listado de Puestos Disponibles" );
            }
        }

        protected void grvPuestosDisponibles_RowCommand ( object sender, GridViewCommandEventArgs e )
        {
            int indiceFila = 0;

            if (e.CommandName == "Agregar")
            {
                try
                {
                    List<Puesto> lstPuestosDisponibles = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"];
                    List<Puesto> lstPuestosAsignados = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"];

                    indiceFila = Convert.ToInt16( e.CommandArgument );
                    Int64 idPuesto = Convert.ToInt64( grvPuestosDisponibles.DataKeys[indiceFila].Values["Id"] );

                    foreach (Puesto puesto in lstPuestosDisponibles)
                    {
                        if (puesto.Id == idPuesto)
                        {
                            if (lstPuestosAsignados == null)
                            {
                                lstPuestosAsignados = new List<Puesto>();
                            }

                            if (!lstPuestosAsignados.Contains( puesto ))
                            {
                                lstPuestosAsignados.Add( puesto );
                            }
                            else
                            {
                                this.RegistrarMensajeJavascript( "Aviso", "Ese puesto ya fue asignado al colaborador" );
                            }
                            break;
                        }
                    }

                    grvPuestosAsignados.DataSource = lstPuestosAsignados;
                    grvPuestosAsignados.DataKeyNames = new string[] { "Id" };
                    grvPuestosAsignados.DataBind();

                    Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = lstPuestosAsignados;

                    CargarGrillaPuestosAsignados( 0 );
                }
                catch (Exception)
                {
                    this.RegistrarMensajeJavascript("Error","No se pudo asignar el puesto");
                    return;
                }
            }
        }

        protected void grvPuestosDisponibles_RowDataBound ( object sender, GridViewRowEventArgs e )
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton boton = (LinkButton)e.Row.Cells[5].Controls[0];
                boton.Text = "Agregar";

                //Cortamos descripcion a 20 caracteres
                if (e.Row.Cells[2].Text.Length > 20)
                {
                    e.Row.Cells[2].Text = e.Row.Cells[2].Text.Substring( 0, 20 ) + "...";
                }
            }
        }

        protected void grvPuestosAsignados_PageIndexChanging ( object sender, GridViewPageEventArgs e )
        {
            try
            {
                CargarGrillaPuestosAsignados( e.NewPageIndex );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript( "Error", "No se pudo obtener el listado de capacidades del puesto" );
            }
        }

        protected void grvPuestosAsignados_RowCommand ( object sender, GridViewCommandEventArgs e )
        {
            int indiceFila;

            if (e.CommandName.Equals( "Quitar" ))
            {
                indiceFila = Convert.ToInt16( e.CommandArgument );

                Puesto puestoABorrarDeAsignados = new Puesto();

                List<Puesto> lstPuestosDisponibles = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosDisponibles"];
                List<Puesto> lstPuestosAsignados = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"];

                Int64 idPuesto = Convert.ToInt64( grvPuestosAsignados.DataKeys[indiceFila].Values["Id"] );

                foreach (Puesto puesto in lstPuestosAsignados)
                {
                    if (puesto.Id == idPuesto)
                    {
                        puestoABorrarDeAsignados = puesto;
                        break;
                    }
                }

                if (lstPuestosAsignados.Contains( puestoABorrarDeAsignados ))
                {
                    lstPuestosAsignados.Remove( puestoABorrarDeAsignados );
                }

                grvPuestosAsignados.DataSource = lstPuestosAsignados;
                grvPuestosAsignados.DataKeyNames = new string[] { "Id" };
                grvPuestosAsignados.DataBind();

                CargarGrillaPuestosAsignados( 0 );

                Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = lstPuestosAsignados;
            }
        }

        protected void grvPuestosAsignados_RowDataBound ( object sender, GridViewRowEventArgs e )
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton boton = (LinkButton)e.Row.Cells[5].Controls[0];
                boton.Text = "Quitar";

                //Cortamos descripcion a 20 caracteres
                if (e.Row.Cells[2].Text.Length > 20)
                {
                    e.Row.Cells[2].Text = e.Row.Cells[2].Text.Substring( 0, 20 ) + "...";
                }
            }
        }

        protected void btnAceptar_Click ( object sender, ImageClickEventArgs e )
        {
            string errores = string.Empty;
            GestorColaborador gestorColaborador = new GestorColaborador();
            GestorPuesto gestorPuesto = new GestorPuesto();
            Colaborador colaboradorUpdate = new Colaborador();
            List<Puesto> lstPuestosAsignados = null;

            if (Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] != null)
            {
                lstPuestosAsignados = (List<Puesto>)Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"];
                if (lstPuestosAsignados.Count == 0)
                {
                    errores = "Debe asignar por lo menos un Puesto para el Colaborador";
                }
            }
            else
            {
                errores = "Debe asignar por lo menos un Puesto para el Colaborador";
            }

            if (errores != string.Empty)
            {
                ScriptManager.RegisterStartupScript( this, this.GetType(), "Error", "alert('" + errores + "')", true );
                return;
            }

            try
            {
                colaboradorUpdate = (Colaborador)Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"];

                gestorColaborador.RegistrarPuestosyCapacidades( colaboradorUpdate );

                Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = null;
                Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = null;

                this.RegistrarMensajeJavascript("Aviso","La operación se registró correctamente");

                Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = null;
                Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = null;

                MpeDetallePuesto.Hide();
                BuscarColaboradores( null, null, null, null, null, null, null, null, chkActivo.Checked );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript( "Aviso", "No se pudo registrar la operación" );
                return;
            }
        }

        protected void btnCancelar_Click ( object sender, ImageClickEventArgs e )
        {
            Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"] = null;
            Session["ABMColaboradoresPuestosCapacidades.lstPuestosAsignados"] = null;

            MpeDetallePuesto.Hide();
        }

        protected void grvPuestosTareasCapacidades_PageIndexChanging ( object sender, GridViewPageEventArgs e )
        {
            try
            {
                CargarGrillaPuestosTareasCapacidades( e.NewPageIndex );
            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript( "Error", "No se pudo mostrar el listado de Puestos" );
            }
        }

        protected void grvPuestosTareasCapacidades_RowCommand ( object sender, GridViewCommandEventArgs e )
        {
            int indiceFila;

            if (e.CommandName.Equals( "QuitarCapacidad" ))
            {
                try
                {
                    indiceFila = Convert.ToInt16( e.CommandArgument );

                    Int64 idColaborador = Convert.ToInt64( grvPuestosTareasCapacidades.DataKeys[indiceFila].Values["colaborador_id"] );
                    Int64 idPuesto = Convert.ToInt64( grvPuestosTareasCapacidades.DataKeys[indiceFila].Values["puesto_id"] );
                    Int64 idTarea = Convert.ToInt64( grvPuestosTareasCapacidades.DataKeys[indiceFila].Values["tarea_id"] );
                    Int64 idCapacidad = Convert.ToInt64( grvPuestosTareasCapacidades.DataKeys[indiceFila].Values["capacidad_id"] );

                    DataTable dt = (DataTable)Session["ABMColaboradoresPuestosCapacidades.dt"];
                    DataRow[] dr = dt.Select( "colaborador_id =" + idColaborador + "AND puesto_id = " + idPuesto +
                                             "AND tarea_id = " + idTarea + "AND capacidad_id =" + idCapacidad );

                    if (dr.Length > 0)
                    {
                        dr[0].Delete();
                        CargarGrillaPuestosTareasCapacidades( 0 );
                        //Mensaje eliminado?
                    }

                    grvPuestosTareasCapacidades.DataKeyNames = new string[] { "colaborador_id", "puesto_id", "tarea_id", "capacidad_id" };
                    grvPuestosTareasCapacidades.DataSource = dt;
                    grvPuestosTareasCapacidades.DataBind();

                    Session["ABMColaboradoresPuestosCapacidades.dt"] = dt;

                    CargarGrillaPuestosTareasCapacidades( 0 );

                }
                catch (Exception)
                {
                    this.RegistrarMensajeJavascript( "Error", "No se pudo quitar la Capacidad" );
                    return;
                }
            }
        }

        protected void grvPuestosTareasCapacidades_RowDataBound ( object sender, GridViewRowEventArgs e )
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton boton = (LinkButton)e.Row.Cells[8].Controls[0];
                boton.Text = "Quitar";
            }
        }

        protected void btnAceptarC_Click ( object sender, ImageClickEventArgs e )
        {
            string errores = string.Empty;
            GestorColaborador gestorColaborador = new GestorColaborador();

            if (Session["ABMColaboradoresPuestosCapacidades.dt"] != null)
            {
                DataTable dt = (DataTable)Session["ABMColaboradoresPuestosCapacidades.dt"];
                if (dt.Rows.Count == 0)
                {
                    errores = "Debe asignar por lo menos una Capacidad para el Colaborador";
                }
            }
            else
            {
                errores = "Debe asignar por lo menos una Capacidad para el Colaborador";
            }

            if (errores != string.Empty)
            {
                ScriptManager.RegisterStartupScript( this, this.GetType(), "Error", "alert('" + errores + "')", true );
                return;
            }

            try
            {
                if (Session["ABMColaboradoresPuestosCapacidades.dt"] != null)
                {
                    Colaborador colaboradorUpdate = (Colaborador)Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"];

                    gestorColaborador.ActualizarPuestosyCapacidades( (DataTable)Session["ABMColaboradoresPuestosCapacidades.dt"], colaboradorUpdate );

                    Session["ABMColaboradoresPuestosCapacidades.dt"] = null;

                    this.RegistrarMensajeJavascript( "Error", "Las capacidades se registraron exitosamente" );
                    MpeDetalleCapacidades.Hide();

                    BuscarColaboradores( null, null, null, null, null, null, null, null, chkActivo.Checked );

                }

            }
            catch (Exception)
            {
                this.RegistrarMensajeJavascript( "Error", "No se pudo asignar las capacidades al Colaborador" );
                return;
            }
        }

        protected void btnCancelarC_Click ( object sender, ImageClickEventArgs e )
        {
            MpeDetalleCapacidades.Hide();
        }

        protected void btnRestablecer_Click ( object sender, ImageClickEventArgs e )
        {
            GestorColaborador gestorColaborador = new GestorColaborador();

            Colaborador colaborador = (Colaborador)Session["ABMColaboradoresPuestosCapacidades.colaboradorUpdate"];

            if (colaborador != null)
            {
                DataTable dt = new DataTable();

                dt = gestorColaborador.ObtenerPuestosTareasCapacidadesColaboradorPorDefecto( colaborador );

                grvPuestosTareasCapacidades.DataKeyNames = new string[] { "colaborador_id", "puesto_id", "tarea_id", "capacidad_id" };
                grvPuestosTareasCapacidades.DataSource = dt;
                grvPuestosTareasCapacidades.DataBind();

                Session["ABMColaboradoresPuestosCapacidades.dt"] = dt;

                CargarGrillaPuestosTareasCapacidades( 0 );
            }
        }

        private void BuscarPuestosTareasCapacidades ( Colaborador colaborador )
        {
            GestorColaborador gestorColaborador = new GestorColaborador();
            if (colaborador != null)
            {
                DataTable dt = new DataTable();

                lblLegajoCValor.Text = colaborador.Legajo;
                lblNombreCValor.Text = colaborador.Nombre;
                lblApellidoCValor.Text = colaborador.Apellido;

                dt = gestorColaborador.ObtenerPuestosTareasCapacidadesColaborador( colaborador );

                grvPuestosTareasCapacidades.DataKeyNames = new string[] { "colaborador_id", "puesto_id", "tarea_id", "capacidad_id", "fechaAlta" };
                grvPuestosTareasCapacidades.DataSource = dt;
                grvPuestosTareasCapacidades.DataBind();

                Session["ABMColaboradoresPuestosCapacidades.dt"] = dt;

                CargarGrillaPuestosTareasCapacidades( 0 );
            }
        }

        private void CargarGrillaPuestosTareasCapacidades ( int pagina )
        {
            if (Session["ABMColaboradoresPuestosCapacidades.dt"] != null)
            {
                DataTable dt = (DataTable)Session["ABMColaboradoresPuestosCapacidades.dt"];

                grvPuestosTareasCapacidades.DataKeyNames = new string[] { "colaborador_id", "puesto_id", "tarea_id", "capacidad_id", "fechaAlta" };
                grvPuestosTareasCapacidades.DataSource = dt;
                grvPuestosTareasCapacidades.PageIndex = pagina;
                grvPuestosTareasCapacidades.DataBind();

                int cantidadRegistros = 0;

                foreach (DataRow dr in dt.Rows)
                {
                    if (dr.RowState != DataRowState.Deleted)
                    {
                        cantidadRegistros++;
                    }
                }

                lblCantidadCapacidades.Text = cantidadRegistros.ToString();
            }
            else
            {
                lblCantidadCapacidades.Text = "0";
            }
        }

        private void LimpiarCampos ()
        {
            txtBuscarPuesto.Text = string.Empty;
        }
    }
}